home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Diamond Collection
/
The Diamond Collection (Software Vault)(Digital Impact).ISO
/
cdr37
/
list224.zip
/
LISTSERV.DOC
< prev
next >
Wrap
Text File
|
1995-03-13
|
25KB
|
519 lines
Listserv v2.24 (03/13/95) - by Pete Nelson
Terminal One BBS (510) 689-9528
Author: pete@terminal-one.com
Listserv is a wcCODE application that will let you run Internet mailing
lists from your Wildcat BBS. Subscription and unsubscription requests are
handled automatically, either via the list address or a listserv@ address.
Different types of mailing lists are supported: open, closed, authorized
users only, etc.
* What is a listserv? *
A listserv is a program that runs mailing lists on Internet. People send
e-mail to the listserv address, and the listserv program sends that e-mail
out to the other subscribers. The Listserv .WCX works in the same manner.
People send e-mail to the address you set up, and when you run the Listserv
program, it sends out the messages to the subscribers. Listserv will only
send and receive messages in the conference you specify in the configuration
file, which must be your conference for Internet e-mail. Do not set up
a conference in Makewild or wcGATE for your mailing list. From what I can
tell, it won't work. wcGATE was only written to handle incoming messages
from a mailing list, and wasn't designed to host one. If MSI is smart,
they'll add this feature to wcGATE so I won't have to work on Listserv
anymore, although it is kinda fun! :)
* Installation *
Listserv can be run as an event, but can also be set up as a menu choice for
the sysop to run at his/her discretion. You need to copy the following files
into your main Wildcat directory:
LISTSERV.WCX - Compiled Listserv program. Set this up as a menu option for
the sysop or as an event. This is the program that checks and processes your
Internet mailing lists.
LISTUTIL.WCX - Utility to let to add/view/remove mailing lists, and to
add/drop/view subscribers to those lists. Run this only as a menu option.
LISTSERV.CFG - Contains the number for your Internet E-Mail conference.
Put the conference number on the first line.
LISTSERV.PTR - Stores the high message pointer for your Internet E-Mail
conference, default is 0. Be SURE to change this number when you first
install or when you renumber your Internet e-mail database, as it could
drastically affect your mailing list.
LISTSERV.DAT - Stores info on all the mailing lists you host. This will
not be present in the ZIP file. It will be created when you make your
first mailing list.
LISTSERV.FLT - Filter file: This file, if it exists, can be used to filter
out certain lines on outgoing messages. It should contain the exact text of
the line you want filtered out. This file need only exist if you have
problems with messages looping back to your mailing list address. Be SURE
you have NO EXTRA CARRIAGE RETURNS or your outgoing messages will be very
compact, since Listserv will filter out the carriage returns on the messages.
Here's an example of what might be in the file, with the (Line x) not actually
being in the file:
(Line 1) To: wildcat-l@terminal-one.com
(Line 2) To: aliens-l@terminal-one.com
(Line 3 is the EOF marker)
Again, having no extra carriage returns is VERY IMPORTANT! I have done some
testing and the filters seem to work.
LISTSERV.LOG - Listserv's log file. This is added to every time Listserv
runs. It will give you some stats on the messages sent out and the messages
that were skipped.
LISTSERV.HLP - Custom Help File. If a message is send to LISTSERV with a
subject of 'HELP', this file will be sent back if it exists. You can put
anything you want in this file, such as a list of the mailing lists you host
or commands that are used to subscribe to your mailing lists.
* Creating a new Mailing List with Listutil *
The first thing you need to do is run Listutil and create your first mailing
list. Choose the option to Create a new Mailing List.
First it will ask you for the name of your mailing list. Choose a name
that is suited to your mailing list. I run a Wildcat mailing list, so I
called mine Wildcat-L. Type in the name of your mailing list, minus your
domain name.
It will then ask you for the file name to use. Let me explain how the
file naming works. Suppose you ran a mailing list called WILDCAT-L, and
the file name was WILDLIST. Your file names for that mailing list
would be:
WILDLIST.DAT - Subscriber list, binary file
WILDLIST.ADD - Message sent to new subscribers
WILDLIST.DRP - Message sent to people that unsubscribe
WILDLIST.SIG - Signature added to outgoing messages on the mailing list
WILDLIST.NOT - Message sent to people that try to post on the mailing list
when they're not a subscriber or they're not authorized to
post on that list
WILDLIST.CLS - Message send on a closed list to users that try to subscribe
automatically
WILDLIST.LST - List of users authorized to post on the mailing list. MUST
exist for type 5 and 6 mailing lists. It does not affect
types 1 through 4.
Every file for that mailing list is based on the main file name. Listserv
will automatically create the .DAT file for you when someone subscribes or
you add a subscriber. The other files are standard text files you can
create. If the .ADD, .DRP, .NOT, .CLS or .SIG files are not present, then
that message or .SIG will not be sent.
Listserv supports six types of mailing lists:
1) Automatic subscriptions, anyone can post
2) Automatic subscriptions, must subscribe to post
3) Must e-mail host to subscribe, anyone can post
4) Must e-mail host to subscribe, only subscribers can post
5) Automatic subscriptions, must be authorized to post
6) Must e-mail host to subscribe, must be authorized to post
For type 5 and 6 lists, you MUST create a .LST file. This is is an ASCII
file, and on each line of the file you would list the addresses that
are authorized to post on that list. Example:
Pete Nelson
pete@terminal-one.com
president@whitehouse.gov
A name without a domain name (Pete Nelson) would be your user name on the
BBS. This way you can post locally to your own mailing list.
You will also need to make a user account for each mailing list so incoming
messages don't get bounced back. Make sure this account has full access to
your Internet e-mail conference. Give the account name the same name as your
mailing list, minus your domain name. Example: If the mailing list address
is WILDCAT-L@TERMINAL-ONE.COM, make a user called WILDCAT-L
Also, be sure to create an account for the LISTSERV@ address. The easiest
way to make these accounts is to do so through wcPRO or the User Database
in the Sysop Menu.
* Adding or Dropping subscribers manually *
Run Listutil, and choose the option to Add Subscribers or Drop Subscribers.
Enter the name of the mailing list, then enter the address you wish to add
or remove. When dropping a subscriber, you can type in a partial name
and Listutil will find a match on that name. You will be asked to verify
the address when adding and dropping subscribers.
* Removing a Mailing List *
Run Listutil and choose the option to Remove a Mailing List. Enter the
name of the mailing list you wish to remove.
*NOTE* When you Remove a Mailing List via Listutil, it does not delete the
data files the list was using. You need to delete the files manually if you
remove a mailing list, otherwise the files remain in case you removed a list
accidentally.
* Moderating a mailing list *
Listutil has a feature that will let you scan the message database for any
unprocessed mailing list messages. Listutil will check from the last time
Listserv was ran. It will check each message to see if its for the
'listserv' address or one of your mailing lists. If it is, it will display
a short message header and the message body. You are then given an option
to delete the message or go on to the next unprocessed message. Hitting
[ENTER] for the default answer will go on to the next message. Once the
message is deleted, Listserv will skip over that message when it runs.
This is how you can moderate your mailing lists!
* Subscribing/unsubscribing from the mailing lists. *
Users who wish to sign up to the mailing list should send e-mail to the
list (ex: wildcat-l@terminal-one.com) and use for the subject either
the word 'subscribe' or 'unsubscribe'.
Users may also send e-mail to listserv@domain.name.com
(ex: listserv@terminal-one.com). In the body of the message, they can put
their subscription requests in as 'subscribe listname' or
'unsubscribe listname'. Be sure that you do not put your username as part
of the command. If you do, Listserv will not recognize it. This is the
recommended way of subscribing/unsubscribing to the mailing lists.
* Special Info on using wcPACK *
Right now, Listserv uses the number stored in the pointer file to file to find
the next message to check, but wcPACK can cause this to become incorrect. I
will have to add support so it checks the high message number for the current
conference for the mailing list account (WILDCAT-L, for example). That way
the high message number will get updated when wcPACK does its high message
number update. I also need to find out how to access the high message numbers
in a user account through wcCODE. MSI Support will have to help me with this
one, cause I can't find anything in the docs that say how. So for now, if
you want your mailing list to work correctly, don't use wcPACK on your
Internet e-mail conference. You may also want to check the high message
pointers before you run Listserv. I currently run it as an option on my
sysop menu, and I always check things before I run it.
Author's Note: I've found that using wcPACK on the Internet e-mail
conference generally does not cause problems when running with Listserv.
However, I would do some testing to be sure, and I always run wcPACK on
my Internet e-mail conference manually.
* Bounced Messages *
One of the problems with running a mailing list is what to do with the
bounced or rejected messages. I had been adding support to have Listserv
look for certain subjects (HOST UNKNOWN, WARNING FROM UUCP, UNDELIVERABLE).
With the release of v2.03, Listserv skips messages sent by non-subscribers.
None of the Postmaster, UUCP, mail daemons or other automatic mail handlers
on different hosts are usually signed up to a mailing list, therefore any
returned messages from them are skipped!
* Listserv Data Records *
It occurred to me that I should post the records for the data strutcures
so other coders out there can write utilities for Listserv if they needed to.
Here they are, including remark lines so you may cut and paste:
// This is the data type for the list of subscribers of each list
// The 'name' would be the e-mail addresses of the subscriber
type sublist_rec
name as string*70
end type
// This is the data type for the master list of mailing lists
// found in LISTSERV.DAT. The 'name' would be the name of the mailing
// list address (ex: wildcat-l). The 'subfile' would be the set of
// data files used by that mailing list (ex: WILDLIST.DAT, WILDLIST.SIG,
// WILDLIST.ADD, etc)
// The type would be the list type, specified as 1 through 6. This was
// added with the v2.20 release on 2-8-95
type list_record
name as string*70
subfile as string*8
type as integer
end type
// End of data types for Listserv
* I am currently hosting/testing a Wildcat mailing list. Please send e-mail *
* to 'listserv@terminal-one.com' with the words 'subscribe wildcat-l' in the *
* body of the message. I also run a Listserv mailing list, and I suggest *
* you sign up for this as well. I use that mailing list to send out the new *
* versions of Listserv. Sign up using 'subscribe listserv-distrib' in the *
* message body. *
If there is anything missing in the docs, please tell me! Writing
documentation is not my strong point, and if I'm leaving something out then
I'd like to get it added.
* Registration *
This wcCODE program is free, and does not require registration, although I
would like you to send me an e-mail to tell me that you are using it and what
you think of it.
Send e-mail to: pete@terminal-one.com
If you really feel like paying me, I'll be more than happy to accept your
donations! Please mail them to:
Pete Nelson
640 Bailey Rd. #109
Pittsburg, CA 94565
When you register, you will receive a LISTSERV.KEY file via e-mail. Just place
this file in the same directory as the rest of the Listserv files, and each
time you run Listserv, you will be reminded of your gracious contribution
to a fellow sysop. :)
* Revision History *
v2.24 - (03/13/95) When a message is sent out on the mailing list, Listserv
will send a confirmation message back to the author of the original
message. The format of the message is:
Your message 'This is the subject' was sent out to
LISTNAME on 03/13/95 at 01:45:23 pm.
- When Listserv receives a message addressed to LISTSERV with a
subject of 'help', it will send back a file called LISTSERV.HLP if
it exists. You can put anything in here that you want, such as a
list of your mailing lists, how to subscribe, etc.
- Fixed a very minor bug in Listutil
- Listutil will now display the total number of subscribers when
listing or searching a subscriber list.
- The rebuild function in Listutil now trims any leading or trailing
spaces off the subcribers mailing address. I noticed some e-mail
addresses were being added with a leading space and it was annoying
me, so I changed it. :)
v2.23 - (03/01/95) Now creates a LISTSERV.LOG file that shows the message
counts each time Listserv runs.
- Added an option in Listutil to rebuild a mailing list subscriber
file.
- New computers at work - wcCODE compiles and runs really fast on a
Pentium 90!
v2.22 - (02/10/95) Added the ability to the Moderate function to edit
the message body or subject
v2.22 - (02/09/95) Added a feature to Listutil that will search for
messages that have not been processed by Listserv. It will
check each message to see if it is addressed to 'listserv' or
one of your mailing lists. If it is, it will show you a message
header as well as the body of the message. You are then given an
option to delete the message or to go on to the next message.
Once the message has been deleted, Listserv will skip over it
when it runs.
- Thanks to MSI support, Listserv now does a different (correct)
method of checking to see if a message has been deleted. According
to the Addendum text, a flag of 200 signifies a deleted message.
So I tried using the FlagIsSet command to test for it, but didn't
have much luck. Called MSI support. They said the FlagIsSet command
is broken. They said you can do this to test for a flag:
If (Msg.Flags and 0x0200) <> 0 Then Print "Flag is set."
If (Msg.Flags and 0x0200) = 0 Then Print "Flag is cleared."
This should work for any of the bit-masked flags you need to
check! Thanks MSI!
v2.20 - (02/08/95) Listserv now supports six types of mailing lists!
These will be set up through Listutil. Be sure to read the
UPGRADE.DOC file! Here are the new types of mailing lists:
(1) Anyone can subscribe, anyone can post
(2) Anyone can subscribe, only subscribers can post
(3) Must e-mail host to subscribe, anyone can post
(4) Must e-mail host to subscribe, only subscribers can post
(5) Anyone can subscribe, must be authorized to post
(6) Must e-mail host to subscribe, must be authorized to post
Listserv will send out a custom messgae for a type 3, 4 or 6 message
when someone tries to subscribe. It will also send out a message
for a type 5 or 6 if an unauthorized person tries to post.
- Fixed a bug where Listserv would skip some messages to the LISTSERV
address when the Subject contained a subscribe or unsubscribe
message. This should work more reliably now.
- (Wow... I've more than doubled the size of the code since v2.00!)
v2.13 - (02/06/95) Fixed a bug where Listserv would exit when someone that
was not a subscriber tried to send a message to the list.
- The "From: username@domain.com" that was added to each message has
been removed. The incoming message header always has the From
address anyways (unless you sent the message locally), so it was
kind of redundant.
- Each message will now have a "Processed with Listserv v2.13", or
the current version number, added to the end
v2.12 - (01/30/95) Added support for a registration key file. People that
register will now get a key file saying that they have a registered
copy of Listserv!
- LISTUTIL: As my wcCODE programming knowledge expands, I optimize my
code a little more. All the Yes/No prompts in Listutil now use a
standard one or two lines of code using InputYesNo, rather than the
six or seven lines of code using an Inkey command I had been using.
v2.11 - (01/09/95) The first revision for the new year!
Added support for a custom message (LISTSERV.NOT) that is sent out
to people that try to send a message out on the mailing list when
they are not a subscriber.
- Fixed some spelling errors in the docs. :)
v2.10 - (12/22/94) Modified the way Listserv does its displays so it runs
smoother rather than "blocky", although it now runs slightly slower.
If this is a major problem I will change it back to its original
display method.
- LISTUTIL: A few minor bug fixes
v2.09 - (12/19/94) Fixed a bug where Listserv would send a blank message
if no filter file existed. This has been fixed, and why I didn't
catch this when I released v2.08 is beyond me! Guess it was just
one of those days. :)
- Released the data structures in the docs.
- LISTUTIL.WCX: Added an option to reset the high message pointer
v2.08 - (12/12/94) Added a feature to let the sysop filter out certain text
on outgoing messages. The optional file LISTSERV.FLT should contain
the lines you want filtered out of outgoing messages. See the
documentation in the above text on how it should be formatted.
v2.07 - (12/01/94) The feature to skip deleted messages added in v2.06 was
causing Listserv to skip all new imported messages. This should now
be fixed.
v2.06 - (11/29/94) Listserv will now skips messages flagged as deleted. This
way you can add some sort of basic moderation to your mailing list.
- Fixed a bug that would cause Listserv to start at the first message
if the last message pointer (in the LISTSERV.PTR file) was pointing
to a non-existent message. Example: Say the last message was 870,
and that message had been marked as deleted and wcPACK was run to
remove it. Message 870 no longer exists, so Listserv can't find it
and starts at the beginning of the list.
v2.05 - (11/16/94) Listserv now supports a LISTSERV@ address. Users can now
send a message to listserv@domain.name.com, and put the
'subscribe listname' and 'unsubscribe listname' in the body of the
message.
- Fixed a bug that occasionally happened when Listserv reached the last
record in it's subscriber list and would hang if the last record was
blank.
v2.04 - (11/15/94) Not released due to a bug
v2.03 - (11/10/94) Messages sent by a non-subscriber are skipped and not
sent out on the mailing list.
- Fixed a bug where Listserv would send/process one message and then
exit.
v2.02 - (10/31/94) Recompiled to work with Wildcat v4.01
- Messages with a subject of HOST UNKNOWN are now skipped
- Fixed a bug where Listserv was sending out messages with blank
subjects. Listserv now skips such messages.
v2.01 - (10/7/94) Turned off the Pause prompt
- Messages with a subject of EXECUTION FAILED or a blank subject are
now skipped and not sent out on the mailing list
v2.00 - (10/6/94) Support for multiple mailing lists added! Yeah!
- Custom messages for each mailing list
- Listutil now handles the support for adding/removing mailing lists
- When using Listutil, you can type in a full or partial name, and
it will come of with a match. IE: WILD would find WILDCAT if it
existed. This works in both the mailing list and subscriber areas.
- Messages with a subject of SUB or UNSUB are now treated as
subscription/unsubscription requests.
- Listserv will change back to the original conference it was launched
from
v1.06 - (9-29-94) Messages that contain a subject of WARNING FROM UUCP,
UNDELIVERABLE or UNKNOWN ADDRESS are skipped. This way bounced
messages are not sent back out on the mailing list.
- Fixed a bug that would give a "file already open" error when
an unsubscription request was immediately followed by a subscription
request.
v1.05 - (9-22-94) Messages with the a subject of SUB, UNSUB or blank are
now considered invalid subscription requests. A custom message is
sent out (INVALSUB.MSG) when Listserv gets one of these messages.
(Thanks to steve.henry@ambassador.com for the suggestion)
- All messages sent out on the list now show the From name as the
mailing list name. This makes it easier to send replies back to
the mailing list rather than the original sender.
(Thanks to sysop@guildnet.org for the suggestion)
v1.04 - (9-12-94) Fixed a bug that was causing wcGATE not to export
the outgoing messages. Here's what was happening:
There is a field in the Message Header record called Network Name.
My Internet provider is Holonet, and I wrote a small WCX to have
it display all the Network Names in the messages in my Internet
E-mail conf. Well, all the ones that were imported said HOLONET,
and all the local ones added by the system, straight Wildcat and not
the wcCODE program, were blank. When Listserv got a message from
Internet, the Network Name was already set to HOLONET, and when it
saved an outgoing message, the Network Name was still set to HOLONET,
hence wcGATE thinks that the message had already been imported so it
didn't export it again. All I did was reset the Network Name to
blank before the message was saved so wcGATE will export the message.
v1.03 - Fixed a bug that was causing messages to be saved as public rather
than private. All outgoing messages created are now private.
(Thanks to Steve at MSI for sending me the message flags info!)
- Added support for custom messages that are sent when people subscribe
and unsubscribe from the list
- Added a utility that lets you add/drop/list subscribers in the
mailing list.
v1.02 - Added support so users already signed up for the list cannot get
signed up again
- Added/changed come of the colors
- Added support for a customizable tagline (.sig) for each message.
- Fixed a bug where it put the mailing list name as the "From" name
- Turned off the "More" prompt.
v1.01 - Sends a reply when you subscribe or unsubscribe from the list.
- Included in docs how to actually subscribe/unsubscribe to the
mailing list! Ooops, slight oversight.
v1.0 - Initial Release.
I can't believe I've written so much documentation for this program! :)